package tictactoeonline;
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

 

import java.util.ArrayList;

/**
 * Die Klasse fuer das gesammte Spielfeld, die ueber alle beteiligten Felder herrscht.
 * @author Daniel Mueller, Phillip Hertel, Jonas Hauff
 */
public class Felder {
    private ArrayList<Feld> felder;
    
    private Feld feld1;
    private Feld feld2;
    private Feld feld3;
    private Feld feld4;
    private Feld feld5;
    private Feld feld6;
    private Feld feld7;
    private Feld feld8;
    private Feld feld9;
    
    public Felder()
    {
        felder = new ArrayList();
    }
    /**
     * Das Uebergebene Feld wird makiert und der zugehoerige Spieler als Makierer festgelegt.
     * @param pFeld
     * @param pSpieler
     * @return 
     */
    public String feldMakieren(String pFeld, String pSpieler)
    {
        String pMFeld = "";
        if(pFeld.equals("Feld1")&&feld1.getStatus()==false)
        {                   
            feld1.makieren();
            feld1.setMakierer(pSpieler);
            pMFeld = "Feld1";
        }
        else if(pFeld.equals("Feld2")&&feld2.getStatus()==false)
        {
            feld2.makieren();
            feld2.setMakierer(pSpieler);
            pMFeld = "Feld2";
        }
        else if(pFeld.equals("Feld3")&&feld3.getStatus()==false)
        {
            feld3.makieren();
            feld3.setMakierer(pSpieler);
            pMFeld = "Feld3";
        }
        else if(pFeld.equals("Feld4")&&feld4.getStatus()==false)
        {
            feld4.makieren();
            feld4.setMakierer(pSpieler);
            pMFeld = "Feld4";
        }
        else if(pFeld.equals("Feld5")&&feld5.getStatus()==false)
        {
            feld5.makieren();
            feld5.setMakierer(pSpieler);
            pMFeld = "Feld5";
        }
        else if(pFeld.equals("Feld6")&&feld6.getStatus()==false)
        {
            feld6.makieren();
            feld6.setMakierer(pSpieler);
            pMFeld = "Feld6";
        }
        else if(pFeld.equals("Feld7")&&feld7.getStatus()==false)
        {
            feld7.makieren();
            feld7.setMakierer(pSpieler);
            pMFeld = "Feld7";
        }
        else if(pFeld.equals("Feld8")&&feld8.getStatus()==false)
        {
            feld8.makieren();
            feld8.setMakierer(pSpieler);
            pMFeld = "Feld8";
        }
        else if(pFeld.equals("Feld9")&&feld9.getStatus()==false)
        {
            feld9.makieren();
            feld9.setMakierer(pSpieler);
            pMFeld = "Feld9";
        }
        return pMFeld;
    }
    /**
     * Es wird ermittelt, ob bereits ein Gewinner feststeht.
     * @return 
     */
    public String gewinnerErmitteln()
    {
        String gewinner = "";
        if(feld1.getStatus()== true)
        {
            String pName = feld1.getMarkierer();
            if(feld2.getStatus()==true&&feld2.getMarkierer().equals(pName)&&feld3.getStatus()==true&&feld3.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
            if(feld4.getStatus()==true&&feld4.getMarkierer().equals(pName)&&feld7.getStatus()==true&&feld7.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
            if(feld5.getStatus()==true&&feld5.getMarkierer().equals(pName)&&feld9.getStatus()==true&&feld9.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
        }
        if(feld2.getStatus() == true)
        {
            String pName = feld2.getMarkierer();
            if(feld5.getStatus()==true&&feld5.getMarkierer().equals(pName)&&feld8.getStatus()==true&&feld8.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
        }
        if(feld3.getStatus() == true)
        {
            String pName = feld3.getMarkierer();
            if(feld6.getStatus()==true&&feld6.getMarkierer().equals(pName)&&feld9.getStatus()==true&&feld9.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
            if(feld5.getStatus()==true&&feld5.getMarkierer().equals(pName)&&feld7.getStatus()==true&&feld7.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
        }
        if(feld4.getStatus() == true)
        {
            String pName = feld4.getMarkierer();
            if(feld5.getStatus()==true&&feld5.getMarkierer().equals(pName)&&feld6.getStatus()==true&&feld6.getMarkierer().equals(pName))
            {
                
            }
        }
        if(feld7.getStatus() == true)
        {
            String pName = feld7.getMarkierer();
            if(feld8.getStatus()==true&&feld8.getMarkierer().equals(pName)&&feld9.getStatus()==true&&feld9.getMarkierer().equals(pName))
            {
                gewinner = pName;
            }
        }
        if(!gewinner.equals(""))
        {
            if(feld1.getStatus() == true&&feld2.getStatus() == true&&feld3.getStatus() == true&&feld4.getStatus() == true&&feld5.getStatus() == true&&feld6.getStatus() == true&&feld7.getStatus() == true&&feld8.getStatus() == true&&feld9.getStatus() == true)
            {
                gewinner = "Unentschieden";
            }
            return gewinner;
        }
        else return "";
    }
    /**
     * Die Feldmakierungen werden zurueckgesetzt.
     */
    public void felderZuruecksetzen()
    {
        feld1.entmakieren();
        feld1.setMakierer(null);
        feld2.entmakieren();
        feld2.setMakierer(null);
        feld3.entmakieren();
        feld3.setMakierer(null);
        feld4.entmakieren();
        feld4.setMakierer(null);
        feld5.entmakieren();
        feld5.setMakierer(null);
        feld6.entmakieren();
        feld6.setMakierer(null);
        feld7.entmakieren();
        feld7.setMakierer(null);
        feld8.entmakieren();
        feld8.setMakierer(null);
        feld9.entmakieren();
        feld9.setMakierer(null);
    }
    /**
     * Die Felder werden erstellt.
     */
    public void felderErstellen()
    {
        feld1 = new Feld();
        feld2 = new Feld();
        feld3 = new Feld();
        feld4 = new Feld();
        feld5 = new Feld();
        feld6 = new Feld();
        feld7 = new Feld();
        feld8 = new Feld();
        feld9 = new Feld();
        felder.add(feld1);
        felder.add(feld2);
        felder.add(feld3);
        felder.add(feld4);
        felder.add(feld5);
        felder.add(feld6);
        felder.add(feld7);
        felder.add(feld8);
        felder.add(feld9);
    }
}
